package com.stefanini.pe.bbva.bp.in.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.stefanini.pe.bbva.bp.in.dao.iface.BitacoraDAOIface;
import com.stefanini.pe.bbva.bp.in.dao.iface.ClienteDAOIface;
import com.stefanini.pe.bbva.bp.in.to.Bitacora;
import com.stefanini.pe.bbva.bp.in.to.Cliente;

@Repository
public class BitacoraDAOImpl extends SqlMapClientDaoSupport implements BitacoraDAOIface {
	
	@Autowired
	public BitacoraDAOImpl(SqlMapClient sqlMapClient) {
		setSqlMapClient(sqlMapClient);
	}

	@SuppressWarnings("unchecked")
	public List<Bitacora> consultarBitacora(Bitacora oBitacora) throws Exception{	
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", oBitacora.getIdUsuarioAsesor());
		map.put("in_idtipodocumento", oBitacora.getTipoDocumento());
		map.put("in_valorbusqueda", oBitacora.getValorBusqueda());
		
		getSqlMapClientTemplate().queryForList("BP_Bitacora_SqlMap.cons_bitacora",map);
		return (List)map.get("result");
	}

	public List<Bitacora> consultarBitacoraRpt(Bitacora oBitacora) throws Exception{
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", oBitacora.getIdUsuarioAsesor());
		map.put("in_idtipodocumento", oBitacora.getTipoDocumento());
		map.put("in_valorbusqueda", oBitacora.getValorBusqueda());
		map.put("in_formatofecha", oBitacora.getFormatoFechaBusqueda());
		getSqlMapClientTemplate().queryForList("BP_Bitacora_SqlMap.cons_bitacora_rpt",map);
		return (List)map.get("result");
	}
	
	public List<Bitacora> consultarMaxId() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForObject("BP_Bitacora_SqlMap.cons_maxidbita",map);
		return (List)map.get("result");
	}
	
	public void guardarBitacora(Bitacora oBitacora) throws Exception{
		System.out.println("fecha Seleccionada:"+oBitacora.getFechaEvento());
		System.out.println("fecha prox Seleccionada:"+oBitacora.getFechaProxReunion());
		System.out.println("hora evento Seleccionada:"+oBitacora.getHoraEvento());
		System.out.println("hora evento Seleccionada:"+oBitacora.getHoraFin());
		
		getSqlMapClientTemplate().update("BP_Bitacora_SqlMap.spGuardarBitacora",oBitacora);
	}
	
	public void actualizarBitacora(Bitacora oBitacora) throws Exception{
		System.out.println("bitacora:"+oBitacora.getTerminalModificacion());
		System.out.println("bitacora:"+oBitacora.getCodModificacion());
		
		getSqlMapClientTemplate().update("BP_Bitacora_SqlMap.spActualizarBitacora",oBitacora);
	}
	
	@SuppressWarnings("unchecked")
	public List<Cliente> consultaClientesDeEjecutivo(String nombres,String nroDoc,String idUsuarioAsesorSelec,
			String idUsuarioAsesor) throws Exception{
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("in_nombres",nombres);
		map.put("in_nrodocumento", nroDoc);
		map.put("idusuarioasesorselec", idUsuarioAsesorSelec);
		map.put("in_idusuarioasesor",idUsuarioAsesor);
		getSqlMapClientTemplate().queryForList("BP_Bitacora_SqlMap.spConsClientesEjecutivo",map);
		return (List<Cliente>)map.get("result");
	}
	
	public void ingresarAnexoCliente(Map<String, Object> map) throws Exception{
		getSqlMapClientTemplate().queryForObject("BP_Bitacora_SqlMap.spIngAnexoCliente",map);
	}
	
	public List<Map<String, Object>> consAnexoCliente(Long idBitacora) throws Exception{
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("in_idbitacora", idBitacora);
		getSqlMapClientTemplate().queryForList("BP_Bitacora_SqlMap.spConsAnexoCliente",map);
		return	(List<Map<String, Object>>)map.get("result");
	}
	
	
	public List<Map<String, Object>> consBusAnexoCliente(String codCliente,
														 Long idUsuarioAsesor,
			                                             String fechaInicio,
														 String fechaFin,
														 String descripcion) throws Exception{
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("in_codcliente", codCliente);
		map.put("in_idusuarioasesor", idUsuarioAsesor);
		map.put("in_fechaInicio", fechaInicio);
		map.put("in_fechaFin", fechaFin);
		map.put("in_descripcion", descripcion);
		getSqlMapClientTemplate().queryForList("BP_Bitacora_SqlMap.spConsBusAnexoCliente",map);
		return	(List<Map<String, Object>>)map.get("result");
	}
	
	public void deleteAnexoCliente(String seq) throws Exception{
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("in_seq",seq);
		getSqlMapClientTemplate().queryForObject("BP_Bitacora_SqlMap.spDelAnexoCliente",map);
	}
	
}
